package com.javaziliao.base.algorithms;

public class BinarySearch {

    /**
     * 二分查找，找到返回索引，找不到返回-1
     *
     * @param nums   升序数字
     * @param target 要查找的数字
     * @return 找到返回索引，找不到返回-1
     */
    public static int binarySearchBasic(int[] nums, int target) {
        //1、定义首尾指针
        int i = 0, j = nums.length - 1;
        //2、首指针索引大于尾指针结束循环
        while (i <= j) {
            //3、找到首+尾指针的中间位置
            int m = (i + j) / 2;
            //4、调整首、尾指针的位置
            if (target > nums[m]) {
                //target大于中间位置值，首指针指向m+1
                i = m + 1;
            } else if (nums[m] > target) {
                //target小于中间位置值，尾指针指向m-1
                j = m - 1;
            } else {
                //找到了
                return m;
            }
        }
        return -1;
    }


}
